▋前言
在使用 AMI Meeting Corpus 進行語音分析實驗時,發現一個重要的問題:
逐字稿 (ES2002a.Mix-Headset.txt) 裡的說話者標籤(如 Speaker 0、Speaker 1、teacher)
與 情緒摘要 (summarize_emotion.txt) 裡的標籤(如 Speaker 1、teacher、Speaker 3)無法一一對應。
這代表:
在情緒分析報告裡的 “Speaker 1” 不一定是逐字稿裡的 “Speaker 1”,
造成資料對齊與後續統計的困難。今天就來分析為什麼會發生這個狀況。
▋內容
一、問題現象
以下是實際輸出的片段:
summarize_emotion.txt
Speaker: Speaker 1
sad: 15 (17.65%)
hap: 43 (50.59%)
neu: 27 (31.76%)
ES2002a.Mix-Headset.srt (逐字稿對應)
0:00:01.000 --> 0:00:03.000
(Speaker 0): Good morning everyone.
→ 可以看到兩者標籤不同步,造成「情緒分布」與「逐字稿內容」無法正確比對。
二、問題根源:Speaker Mapping 的邏輯衝突
整個語者標籤的產生流程如下:
NeMo Diarization 輸出
NeMo 會自動將每位講者標記為 Speaker 0, Speaker 1, Speaker 2...
這只是臨時 index,與實際身份(如老師或學生)無關。
Speaker Verification 比對
系統會提取每位講者的 embedding,再與教師樣本比對。
最相似的被標為 teacher,其他依距離排序為 Speaker 0, 1, 2...
❗ 這個排序與 NeMo 原本輸出的順序不同!
speaker_mapping 產生
若為雙人對話:標為 teacher 與 student。
若為多人對話:最像教師的標為 teacher,其餘依 embedding 相似度 重新排序。
結果導致:
NeMo 的 Speaker 0 可能在比對後變成 Speaker 1 或 teacher,
所以逐字稿和情緒統計就對不上。
三、具體範例
在這次分析中:
summarize_emotion.txt 的 Speaker 1 → 原本可能是 NeMo 的 Speaker 0
ES2002a.Mix-Headset.srt 則仍保留 NeMo 的 Speaker index
導致兩份檔案無法直接對應。
四、初步結論
問題來源 | 影響 |
---|---|
Speaker Mapping 依據 embedding 動態排序 | 不同檔案間的標籤不一致 |
缺乏固定 identity 映射 | 難以比對逐字稿與情緒報告 |
重新標籤時覆寫原始 index | 無法回溯原始 NeMo 輸出順序 |
這其實是多模組整合時的常見陷阱:「語者辨識」與「語者比對」同時存在,但邏輯未同步。
▋下回預告
下一篇將分享如何修正這個邏輯問題,讓逐字稿與情緒報告能對齊,並反思這段經驗帶來的教訓。
▋參考資料